Clover coverage report - Enterprise Web Services - 1.0
Coverage timestamp: Mon May 30 2005 17:10:32 CEST
file stats: LOC: 412   Methods: 15
NCLOC: 85   Classes: 1
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
 
 Source file Conditionals Statements Methods TOTAL
AxisEmitterBasedJaxRpcMapperContext.java 33.3% 26.9% 13.3% 23.4%
coverage coverage
 1   
 /*
 2   
  * Copyright 2001-2004 The Apache Software Foundation.
 3   
  * 
 4   
  * Licensed under the Apache License, Version 2.0 (the "License");
 5   
  * you may not use this file except in compliance with the License.
 6   
  * You may obtain a copy of the License at
 7   
  * 
 8   
  *      http://www.apache.org/licenses/LICENSE-2.0
 9   
  * 
 10   
  * Unless required by applicable law or agreed to in writing, software
 11   
  * distributed under the License is distributed on an "AS IS" BASIS,
 12   
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13   
  * See the License for the specific language governing permissions and
 14   
  * limitations under the License.
 15   
  */
 16   
 
 17   
 package org.apache.geronimo.ews.ws4j2ee.context.impl;
 18   
 
 19   
 import org.apache.axis.wsdl.fromJava.Emitter;
 20   
 import org.apache.axis.wsdl.symbolTable.BindingEntry;
 21   
 import org.apache.axis.wsdl.symbolTable.PortTypeEntry;
 22   
 import org.apache.axis.wsdl.symbolTable.ServiceEntry;
 23   
 import org.apache.geronimo.ews.ws4j2ee.context.J2EEWebServiceContext;
 24   
 import org.apache.geronimo.ews.ws4j2ee.context.JaxRpcMapperContext;
 25   
 import org.apache.geronimo.ews.ws4j2ee.toWs.GenerationFault;
 26   
 import org.apache.geronimo.ews.ws4j2ee.toWs.UnrecoverableGenerationFault;
 27   
 import org.apache.geronimo.ews.ws4j2ee.toWs.dd.JaxRpcMappingFileWriter;
 28   
 
 29   
 import javax.wsdl.Operation;
 30   
 import javax.wsdl.Port;
 31   
 import javax.xml.namespace.QName;
 32   
 import java.io.InputStream;
 33   
 import java.io.Writer;
 34   
 import java.lang.reflect.Method;
 35   
 import java.util.HashMap;
 36   
 
 37   
 /**
 38   
  * This class wrap the JAXRPCMapper and only expose a interface to
 39   
  * the rest of the WS4j2ee.
 40   
  *
 41   
  * @author hemapani
 42   
  */
 43   
 public class AxisEmitterBasedJaxRpcMapperContext implements JaxRpcMapperContext {
 44   
     private Emitter emitter;
 45   
     private J2EEWebServiceContext j2eewscontext;
 46   
     private HashMap methods = new HashMap();
 47   
 
 48  11
     public AxisEmitterBasedJaxRpcMapperContext(Emitter emitter, J2EEWebServiceContext j2eewscontext) {
 49  11
         this.emitter = emitter;
 50  11
         this.j2eewscontext = j2eewscontext;
 51  11
         Method[] methods = emitter.getCls().getMethods();
 52  11
         for (int i = 0; i < methods.length; i++) {
 53  40
             this.methods.put(methods[i].getName(), methods[i]);
 54   
         }
 55   
     }
 56   
 
 57   
     /**
 58   
      * @param messageQName
 59   
      * @return
 60   
      */
 61  0
     public String getExceptionType(QName messageQName) {
 62  0
         throw new UnsupportedOperationException();
 63   
         //return jaxrpcmapper.getExceptionType(messageQName);
 64   
     }
 65   
 
 66   
     /**
 67   
      * @param bEntry
 68   
      * @param operation
 69   
      * @return
 70   
      */
 71  0
     public String getJavaMethodName(BindingEntry bEntry, Operation operation) {
 72  0
         return operation.getName();
 73   
     }
 74   
 
 75   
     /**
 76   
      * @param bEntry
 77   
      * @param operation
 78   
      * @param position
 79   
      * @return
 80   
      */
 81  0
     public String getJavaMethodParamType(BindingEntry bEntry,
 82   
                                          Operation operation,
 83   
                                          int position, QName type) {
 84  0
         Method m = (Method) this.methods.get(operation.getName());
 85   
         //axis do not map the method names or types
 86   
         //so this should do 
 87  0
         if (m == null)
 88  0
             throw new UnrecoverableGenerationFault("logic expected is differnet .. worng" +
 89   
                     "design decision");
 90  0
         return m.getParameterTypes()[position].getName();
 91   
     }
 92   
 
 93   
     /**
 94   
      * @param bEntry
 95   
      * @param operation
 96   
      * @return
 97   
      */
 98  0
     public String getJavaMethodReturnType(BindingEntry bEntry,
 99   
                                           Operation operation) {
 100  0
         Method m = (Method) this.methods.get(operation.getName());
 101   
         //axis do not map the method names or types
 102   
         //so this should do 
 103  0
         if (m == null)
 104  0
             throw new UnrecoverableGenerationFault("logic expected is differnet .. worng" +
 105   
                     "design decision");
 106  0
         return m.getReturnType().getName();
 107   
     }
 108   
 
 109   
     /**
 110   
      * @param typeQName
 111   
      * @return
 112   
      */
 113  0
     public String getJavaType(QName typeQName) {
 114  0
         throw new UnsupportedOperationException();
 115   
         // return jaxrpcmapper.getJavaType(typeQName);
 116   
     }
 117   
 
 118   
     /**
 119   
      * @param port
 120   
      * @return
 121   
      */
 122  0
     public String getPortName(Port port) {
 123  0
         return emitter.getServicePortName();
 124   
     }
 125   
 
 126   
     /**
 127   
      * @param ptEntry
 128   
      * @param bEntry
 129   
      * @return
 130   
      */
 131  0
     public String getServiceEndpointInterfaceName(PortTypeEntry ptEntry,
 132   
                                                   BindingEntry bEntry) {
 133  0
         return emitter.getPortTypeName();
 134   
     }
 135   
 
 136   
     /**
 137   
      * @param entry
 138   
      * @return
 139   
      */
 140  0
     public String getServiceInterfaceName(ServiceEntry entry) {
 141  0
         return emitter.getServiceElementName();
 142   
     }
 143   
 
 144   
     /**
 145   
      * @param path
 146   
      */
 147  0
     public void loadMappingFromDir(String path) {
 148  0
         throw new UnsupportedOperationException();
 149   
     }
 150   
 
 151   
     /**
 152   
      * @param is
 153   
      */
 154  0
     public void loadMappingFromInputStream(InputStream is) {
 155  0
         throw new UnsupportedOperationException();
 156   
     }
 157   
 
 158  11
     public void serialize(Writer out) throws GenerationFault {
 159  11
         JaxRpcMappingFileWriter w = new JaxRpcMappingFileWriter(out, emitter, j2eewscontext);
 160  11
         w.write();
 161   
 //
 162   
 //        try {
 163   
 //            JAXBContext jc = JAXBContext.newInstance("org.apache.geronimo.ews.jaxrpcmapping.descriptor");
 164   
 //            ObjectFactory objFactory = new ObjectFactory();
 165   
 //
 166   
 //            JavaWsdlMapping jaxrpcmap = objFactory.createJavaWsdlMapping();
 167   
 //            jaxrpcmap.setVersion(new BigDecimal("1.0"));
 168   
 //            
 169   
 ////adding pckage mappings
 170   
 //            Map map = emitter.getNamespaceMap();
 171   
 //            if (map != null) {
 172   
 //                Iterator packages = map.keySet().iterator();
 173   
 //                while (packages.hasNext()) {
 174   
 //                    PackageMappingType pkgmap = objFactory.createPackageMappingType();
 175   
 //                    //set the package name
 176   
 //                    FullyQualifiedClassType packagename = objFactory.createFullyQualifiedClassType();
 177   
 //                    String pkg = (String) packages.next();
 178   
 //                    String jaxrpcsei = j2eewscontext.getMiscInfo().getJaxrpcSEI();
 179   
 //                    if(pkg == null){
 180   
 //                        //TODO this is temporrary work around to make sure 
 181   
 //                        //the mapping is defined.
 182   
 //                        String pkgName = Utils.getPackageNameFromQuallifiedName(jaxrpcsei);
 183   
 //                        String val = (String)map.get(pkgName);
 184   
 //                        if(val == null){
 185   
 //                            val = Utils.javapkgToURI(pkgName);
 186   
 //                            packagename.setValue(pkgName);
 187   
 //                            pkgmap.setPackageType(packagename);
 188   
 //                            //set the namespace URI
 189   
 //                            XsdAnyURIType nsuri = objFactory.createXsdAnyURIType();
 190   
 //                            nsuri.setValue(val);
 191   
 //                            pkgmap.setNamespaceURI(nsuri);
 192   
 //                        }else{
 193   
 //                            continue;
 194   
 //                        }
 195   
 //                    }else if(pkg.equals(jaxrpcsei)){
 196   
 //                           continue;
 197   
 //                    }else{
 198   
 //                        packagename.setValue(pkg);
 199   
 //                        pkgmap.setPackageType(packagename);
 200   
 //                        //set the namespace URI
 201   
 //                        XsdAnyURIType nsuri = objFactory.createXsdAnyURIType();
 202   
 //                        nsuri.setValue((String) map.get(pkg));
 203   
 //                        pkgmap.setNamespaceURI(nsuri);
 204   
 //
 205   
 //                    }
 206   
 //                    //done :) add the package type
 207   
 //                    jaxrpcmap.getPackageMapping().add(pkgmap);
 208   
 //                }
 209   
 //            }
 210   
 //            
 211   
 ////adding Service mappings
 212   
 /////////////////////////////
 213   
 //            Service service = j2eewscontext.getWSDLContext().gettargetService().getService();
 214   
 //            org.apache.geronimo.ews.jaxrpcmapping.descriptor.JavaWsdlMappingType.ServiceInterfaceMapping servciemaping = objFactory.createJavaWsdlMappingTypeServiceInterfaceMapping();
 215   
 //            
 216   
 //                
 217   
 //            //get the sevice QName    
 218   
 //            XsdQNameType serviceName = objFactory.createXsdQNameType();
 219   
 //            serviceName.setValue(service.getQName());
 220   
 //            servciemaping.setWsdlServiceName(serviceName);
 221   
 //            
 222   
 //            //set the service java Name 
 223   
 //            FullyQualifiedClassType serviceJavaName = objFactory.createFullyQualifiedClassType();
 224   
 //
 225   
 //            String name = emitter.getCls().getName();
 226   
 //            int index = name.lastIndexOf('.');
 227   
 //            String packageName = "";
 228   
 //            if (index > 0)
 229   
 //                packageName = name.substring(0, index + 1);
 230   
 //
 231   
 //            serviceJavaName.setValue(packageName + emitter.getServiceElementName());
 232   
 //
 233   
 //            servciemaping.setServiceInterface(serviceJavaName);
 234   
 //            jaxrpcmap.getServiceInterfaceMappingAndServiceEndpointInterfaceMapping().add(servciemaping);
 235   
 //
 236   
 //
 237   
 //
 238   
 //            Port wsdlport = j2eewscontext.getWSDLContext().getTargetPort();
 239   
 //            Binding binding = wsdlport.getBinding();
 240   
 //             
 241   
 //            //create a portmap
 242   
 //            PortMappingType portmap = objFactory.createPortMappingType();
 243   
 //            //java port name 
 244   
 //            org.apache.geronimo.ews.jaxrpcmapping.descriptor.String javaportname = objFactory.createString();
 245   
 //            javaportname.setValue(emitter.getServicePortName());
 246   
 //            portmap.setJavaPortName(javaportname);
 247   
 //            //wsdl port name 
 248   
 //            org.apache.geronimo.ews.jaxrpcmapping.descriptor.String wsdlportname = objFactory.createString();
 249   
 //            wsdlportname.setValue(wsdlport.getName());
 250   
 //            portmap.setPortName(wsdlportname);
 251   
 //
 252   
 //            servciemaping.getPortMapping().add(portmap);
 253   
 //
 254   
 //            if (binding == null)
 255   
 //                throw new UnrecoverableGenerationFault("no port discription not match with the wsdl file");
 256   
 //
 257   
 //            org.apache.geronimo.ews.jaxrpcmapping.descriptor.JavaWsdlMappingType.ServiceEndpointInterfaceMapping seimapping = objFactory.createJavaWsdlMappingTypeServiceEndpointInterfaceMapping();
 258   
 //            
 259   
 ////set java SEI name
 260   
 //            FullyQualifiedClassType seijavaName = objFactory.createFullyQualifiedClassType();
 261   
 //            seijavaName.setValue(emitter.getCls().getName());
 262   
 //            seimapping.setServiceEndpointInterface(seijavaName);
 263   
 ////set the wsdl finding name
 264   
 //            XsdQNameType bindingQName = objFactory.createXsdQNameType();
 265   
 //            bindingQName.setValue(binding.getQName());
 266   
 //            seimapping.setWsdlBinding(bindingQName);
 267   
 ////set the wsdl port type
 268   
 //            XsdQNameType portTypeQName = objFactory.createXsdQNameType();
 269   
 //            portTypeQName.setValue(binding.getPortType().getQName());
 270   
 //            seimapping.setWsdlPortType(portTypeQName);
 271   
 //            
 272   
 ////add the operation mappings
 273   
 //            Iterator ops = binding.getPortType().getOperations().iterator();
 274   
 //
 275   
 //            while (ops.hasNext()) {
 276   
 //                ServiceEndpointMethodMappingType seimethodmapping = objFactory.createServiceEndpointMethodMappingType();
 277   
 //                Operation op = (Operation) ops.next();
 278   
 //                
 279   
 //                //set the java method name
 280   
 //                org.apache.geronimo.ews.jaxrpcmapping.descriptor.String javamethodname = objFactory.createString();
 281   
 //                javamethodname.setValue(op.getName());
 282   
 //                seimethodmapping.setJavaMethodName(javamethodname);
 283   
 //            
 284   
 //                //TODO not sure what this WrappedElement do. FIXIT
 285   
 //                //seimethodmapping.setWrappedElement();
 286   
 //                
 287   
 //                //set wsdl method name 
 288   
 //                org.apache.geronimo.ews.jaxrpcmapping.descriptor.String wsdlmethodname = objFactory.createString();
 289   
 //                wsdlmethodname.setValue(op.getName());
 290   
 //                seimethodmapping.setWsdlOperation(wsdlmethodname);
 291   
 //            
 292   
 //                //this work only when the method names are same
 293   
 //                //im printing it so that it is easier for user to change 
 294   
 //                //it am sure that no body will writing nor webservices.xml 
 295   
 //                //or jaxrpcmapping.xml files if there is a short cut.
 296   
 //                
 297   
 //                
 298   
 //                //set return type
 299   
 //                Method mtd = (Method) methods.get(op.getName());
 300   
 //                Class ret = mtd.getReturnType();
 301   
 //                if(ret!= null && !("void".equals(ret.toString()))){
 302   
 //                    //create return type  Map
 303   
 //                    WsdlReturnValueMappingType retvalmap = objFactory.createWsdlReturnValueMappingType();
 304   
 //
 305   
 //                    FullyQualifiedClassType retValjavaName = objFactory.createFullyQualifiedClassType();
 306   
 //                    retValjavaName.setValue(ret.getName());
 307   
 //                    retvalmap.setMethodReturnValue(retValjavaName);
 308   
 //                    
 309   
 //                    //set return type info
 310   
 //                    Map parts = op.getOutput().getMessage().getParts();
 311   
 //                    if (parts != null) {
 312   
 //                        Iterator partIt = parts.values().iterator();
 313   
 //                        if (partIt.hasNext()) {
 314   
 //                            //set wsdl message type
 315   
 //                            WsdlMessageType messageType = objFactory.createWsdlMessageType();
 316   
 //                            messageType.setValue(op.getOutput().getMessage().getQName());
 317   
 //                            retvalmap.setWsdlMessage(messageType);
 318   
 //                        
 319   
 //                            //set wsdl message part type
 320   
 //                            WsdlMessagePartNameType messagePartName = objFactory.createWsdlMessagePartNameType();
 321   
 //                            messagePartName.setValue(((Part) partIt.next()).getName());
 322   
 //                            retvalmap.setWsdlMessagePartName(messagePartName);
 323   
 //                        }
 324   
 //
 325   
 //                    }
 326   
 //
 327   
 //                    seimethodmapping.setWsdlReturnValueMapping(retvalmap);
 328   
 //
 329   
 //                }
 330   
 //            
 331   
 //            
 332   
 //                
 333   
 //                //create method param parts mappings    
 334   
 //                int position = 0;
 335   
 //                Class[] params = ((Method) methods.get(op.getName())).getParameterTypes();
 336   
 //
 337   
 //                Iterator parmIt = null;
 338   
 //                Map parameters = op.getInput().getMessage().getParts();
 339   
 //                if (parameters != null) {
 340   
 //                    parmIt = parameters.values().iterator();
 341   
 //                }
 342   
 //
 343   
 //                while (parmIt != null && parmIt.hasNext()) {
 344   
 //                    Part part = (Part) parmIt.next();
 345   
 //                    //create parts mapping
 346   
 //                    MethodParamPartsMappingType partsMapping = objFactory.createMethodParamPartsMappingType();
 347   
 //                    //set parameter position
 348   
 //                    XsdNonNegativeIntegerType pos = objFactory.createXsdNonNegativeIntegerType();
 349   
 //                    pos.setValue(new BigInteger(Integer.toString(position)));
 350   
 //                    partsMapping.setParamPosition(pos);
 351   
 //                    
 352   
 //                    //set parameter java typr
 353   
 //                    JavaTypeType javaType = objFactory.createJavaTypeType();
 354   
 //                    javaType.setValue(params[position].getName());
 355   
 //                    partsMapping.setParamType(javaType);
 356   
 //                    
 357   
 //                    //set message mapping
 358   
 //                    WsdlMessageMappingType msgmappingType = objFactory.createWsdlMessageMappingType();
 359   
 //                    //set mode
 360   
 //                    ParameterModeType mode = objFactory.createParameterModeType();
 361   
 //                    mode.setValue("IN");
 362   
 //                    msgmappingType.setParameterMode(mode);
 363   
 //                    //TODO Im a not sure what to do with the header 
 364   
 //                    //msgmappingType.setSoapHeader();
 365   
 //                    //set wsdl message type
 366   
 //                    WsdlMessageType messageType = objFactory.createWsdlMessageType();
 367   
 //                    messageType.setValue(op.getInput().getMessage().getQName());
 368   
 //                    msgmappingType.setWsdlMessage(messageType);
 369   
 //                    //set wsdl message part type
 370   
 //                    WsdlMessagePartNameType messagePartName = objFactory.createWsdlMessagePartNameType();
 371   
 //                    messagePartName.setValue(part.getName());
 372   
 //                    msgmappingType.setWsdlMessagePartName(messagePartName);
 373   
 //
 374   
 //                    partsMapping.setWsdlMessageMapping(msgmappingType);
 375   
 //                    seimethodmapping.getMethodParamPartsMapping().add(partsMapping);
 376   
 //                }
 377   
 //
 378   
 //                seimapping.getServiceEndpointMethodMapping().add(seimethodmapping);
 379   
 //
 380   
 //            }
 381   
 //            jaxrpcmap.getServiceInterfaceMappingAndServiceEndpointInterfaceMapping().add(seimapping);
 382   
 //                  
 383   
 ////axis do not support XML type mapping or Exception
 384   
 ////maping to be specifed so I do not brother tp print them out. 
 385   
 ////jaxrpcmap.getExceptionMapping();
 386   
 ////jaxrpcmap.getJavaXmlTypeMapping();
 387   
 //            
 388   
 //            Marshaller m = jc.createMarshaller();
 389   
 //            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
 390   
 //            m.marshal(jaxrpcmap, out);
 391   
 //
 392   
 //            Unmarshaller u = jc.createUnmarshaller();
 393   
 //        } catch (Exception e) {
 394   
 //            e.printStackTrace();
 395   
 //            throw GenerationFault.createGenerationFault(e);
 396   
 //        }
 397   
     }
 398   
 
 399  0
     public String getPackageMappingClassName(int index) {
 400  0
         throw new UnsupportedOperationException();
 401   
     }
 402   
 
 403  0
     public int getPackageMappingCount() {
 404  0
         throw new UnsupportedOperationException();
 405   
     }
 406   
 
 407  0
     public String getPackageMappingURI(int index) {
 408  0
         throw new UnsupportedOperationException();
 409   
     }
 410   
 
 411   
 }
 412